package com.ca.project.Server.Modules.RepairInfo.Service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ca.project.Server.Modules.RepairInfo.Context.AcceptRepairInfoContext;
import com.ca.project.Server.Modules.RepairInfo.Context.CreateRepairInfoContext;
import com.ca.project.Server.Modules.RepairInfo.DTO.RepairInfoDTO;
import com.ca.project.Server.Modules.RepairInfo.Entity.RepairInfo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.HashMap;
import java.util.List;

/**
 * @author ASUS
 * @description 针对表【repair_info】的数据库操作Service
 * @createDate 2025-01-03 15:14:50
 */
public interface RepairInfoService extends IService<RepairInfo> {
    /**
     * 创建维修订单
     *
     * @param createRepairInfoContext
     */
    void create(CreateRepairInfoContext createRepairInfoContext);

    /**
     * 删除维修订单
     *
     * @param rId
     */
    void delete(String rId);

    /**
     * 维修人员接单
     *
     * @param acceptRepairInfoContext
     */
    void accept(AcceptRepairInfoContext acceptRepairInfoContext);

    /**
     * 返回待处理订单
     *
     * @param token
     * @return
     */
    List<RepairInfo> getPending(String token);

    /**
     * 返回已完成订单
     *
     * @param token
     * @return
     */
    List<RepairInfo> getFinish(String token);

    /**
     * 返回该用户所有订单
     *
     * @param token
     * @return
     */
    List<RepairInfo> getInfo(String token);

    /**
     * 返回特定的订单信息
     *
     * @param id
     * @return
     */
    RepairInfoDTO getSpecificInfo(String id);

    /**
     * 分页
     *
     * @param currentPage
     * @param pageSize
     * @param repairInfo
     * @return
     */
    IPage<RepairInfo> getPage(Integer currentPage, Integer pageSize, RepairInfo repairInfo);

    /**
     * 分页
     *
     * @param currentPage
     * @param pageSize
     * @return
     */
    IPage<RepairInfo> getPage(Integer currentPage, Integer pageSize);

    /**
     * 获取已接单
     *
     * @param token
     * @return
     */
    List<RepairInfo> getAccept(String token);

    /**
     * 完成订单
     *
     * @param acceptRepairInfoContext
     */
    void finish(AcceptRepairInfoContext acceptRepairInfoContext);
}
